<?php

/**
 * @brief Klasa encyjna OfferStatus
 * 
 * Obiekty wyznaczają statusy jakie przybierają oferty w wyznaczonych przedziałach czasu.
 */

class Application_Model_OfferStatus
{
    protected $_Offer_id;  /*!< Identyfiaktor oferty.*/
    protected $_status; /*!< Status oferty. */
    protected $_startTime; /*!< Czas początku trwania statusu. */
    protected $_endTime; /*!< Czas końca trwania statusu.*/
    
    /**
     * @brief Konstruktor 
     * 
     * Przyjmuje tablicę znaków i na jej podstawie uzupełnia pola,
     * przy pomocy setOptions.
     * @param array $options 
     */
    public function __construct(array $options = null) {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * @brief Metoda uzupełniająca pola na podstawie wejściowej tablicy.
     * 
     * @param array $options
     * @return Obiekt tej klasy.
     */
    public function setOptions(array $options) {

        $methods = get_class_methods($this);

        foreach ($options as $key => $value) {

            $method = 'set' . ucfirst($key);

            if (in_array($method, $methods)) {

                $this->$method($value);
            }
        }
        return $this;
    }
    /**
     * @brief Metoda zwracająca identyfikator oferty.
     *
     * @return int 
     */
    public function getOffer_id() {
        return $this->_Offer_id;
    }
    /**
     * @brief Metoda ustawiająca identyfikator oferty.
     *
     * @param int $_Offer_id 
     */
    public function setOffer_id($_Offer_id) {
        $this->_Offer_id = $_Offer_id;
    }
    /**
     * @brief Metoda zwracająca status oferty.
     *
     * @return 'Otwarta'|'Zamknięta'  
     */
    public function getStatus() {
        return $this->_status;
    }
    /**
     * @brief Metoda ustawiająca status oferty.
     *
     * @param string $_status 
     */
    public function setStatus($_status) {
        $this->_status = $_status;
    }
    /**
     * @brief Metoda zwracająca czas początku trwania statusu oferty.
     *
     * @return string czas w formacie YYYY MM dd HH:ss
     */
    public function getStartTime() {
        return $this->_startTime;
    }
    /**
     * @brief Metoda ustawiająca czas początku trwania statusu oferty.
     *
     * @param string $_startTime 
     */
    public function setStartTime($_startTime) {
        $this->_startTime = $_startTime;
    }
    /**
     * @brief Metoda zwracająca czas końca trwania statusu oferty.
     *
     * @return string czas w formacie YYYY MM dd HH:ss
     */
    public function getEndTime() {
        return $this->_endTime;
    }
    /**
     * @brief Metoda ustawiająca czas końca trwania statusu oferty.
     *
     * @param string $_endTime 
     */
    public function setEndTime($_endTime) {
        $this->_endTime = $_endTime;
    }


}

